package cn.appkf.flappybird.stage;

import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.ui.Button;
import com.badlogic.gdx.scenes.scene2d.ui.TextField;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.badlogic.gdx.utils.Align;
import com.badlogic.gdx.utils.viewport.Viewport;
import com.test.TestGame;

import cn.appkf.flappybird.stage.base.TBaseStage;

/**
 * Created by Administrator on 2016/8/8.
 */
public class LoginStage extends TBaseStage {


    // 文本框的宽高
    public static final int TEXT_FIELD_WIDTH = 300;
    public static final int TEXT_FIELD_HEIGHT = 50;

    // 文本框背景纹理
    private Texture bgTexture;

    // 文本框中的光标纹理
    private Texture cursorTexture;


    // 位图字体
    private BitmapFont bitmapFont;

    // 文本框（用户名）
    private TextField usernameTextField;

    // 文本框（密码）
    private TextField passwordTextField;

    private Button loginButton;




    public LoginStage(TestGame mainGame, Viewport viewport) {
        super(mainGame, viewport);


        init();
    }

    private void init(){
        bgTexture = createBackgroundTexture();
        cursorTexture = createCursorTexture();

        // 为了方便演示, 这里直接使用 gdx.jar 中自带的字体文件创建位图字体（只要在 BitmapFont 中包含有的字符才能够被输入）
        bitmapFont = new BitmapFont();

        // gdx.jar 中自带的字体比较小, 这里放大一下
        bitmapFont.getData().setScale(2.0F);

        /*
         * 第 2 步: 创建 TextFieldStyle
         */
        TextField.TextFieldStyle style = new TextField.TextFieldStyle();

        // 设置背景纹理区域
        style.background = new TextureRegionDrawable(new TextureRegion(bgTexture));

        // 设置光标纹理区域
        style.cursor = new TextureRegionDrawable(new TextureRegion(cursorTexture));

        // 设置文本框显示文本的字体来源
        style.font = bitmapFont;

        // 设置文本框字体颜色为白色
        style.fontColor = new Color(1, 1, 1, 1);

        /*
         * 第 3 步: 创建 TextField
         */
        usernameTextField = new TextField("", style);
        passwordTextField = new TextField("", style);

        // 设置文本框的宽高
        usernameTextField.setSize(TEXT_FIELD_WIDTH, TEXT_FIELD_HEIGHT);
        passwordTextField.setSize(TEXT_FIELD_WIDTH, TEXT_FIELD_HEIGHT);

        // 设置文本框的位置
        usernameTextField.setPosition((getWidth()-TEXT_FIELD_WIDTH)/2, (getHeight()+TEXT_FIELD_HEIGHT)/2);
        passwordTextField.setPosition((getWidth()-TEXT_FIELD_WIDTH)/2, (getHeight()-TEXT_FIELD_HEIGHT)/2);

        // 文本框中的文字居中对齐
        usernameTextField.setAlignment(Align.center);
        passwordTextField.setAlignment(Align.center);

        // 用于显示密码的文本框, 需要将文本框设置为密码模式
        passwordTextField.setPasswordMode(true);
        // 显示密码时用 * 号代替密码字符
        passwordTextField.setPasswordCharacter('*');

        /*
         * 第 4 步: 添加 TextField 到舞台
         */

        loginButton=new Button();

        loginButton.setPosition(100, 200);

        // 给按钮添加点击监听器
        loginButton.addListener(new ClickListener() {
            @Override
            public void clicked(InputEvent event, float x, float y) {


            }
        });


        addActor(usernameTextField);
        addActor(passwordTextField);

        addActor(loginButton);
    }


    /**
     * 创建文本框的背景纹理
     */
    private Texture createBackgroundTexture() {
        Pixmap pixmap = new Pixmap(TEXT_FIELD_WIDTH, TEXT_FIELD_HEIGHT, Pixmap.Format.RGBA8888);
        pixmap.setColor(1, 0, 0, 1);
        pixmap.drawRectangle(0, 0, pixmap.getWidth(), pixmap.getHeight());
        Texture texture = new Texture(pixmap);
        pixmap.dispose();
        return texture;
    }

    /**
     * 创建文本框中的光标纹理
     */
    private Texture createCursorTexture() {
        Pixmap pixmap = new Pixmap(1, TEXT_FIELD_HEIGHT - 4, Pixmap.Format.RGBA8888);
        pixmap.setColor(1, 0, 0, 1);
        pixmap.fill();
        Texture texture = new Texture(pixmap);
        pixmap.dispose();
        return texture;
    }

    @Override
    public void act(float delta) {
        super.act(delta);
    }

    @Override
    public void draw() {
        super.draw();
    }
}
